An interactive 3D simulator that shows how far a Doraemon-like character tips over when you change the weight of the object held in his raised hand. It is a hobby project that combines a simple statics/dynamics model with a three.js scene.
Unofficial fan-made project. Not affiliated with or endorsed by the rights holders of Doraemon.
m_c, ratio m / m_c, tilt anglem / m_c reaches 1 (the center line), he starts to tip over.The model is planar (2D, side-on) and treats the body as a rigid body that can rotate about the outer edge of the foot on the arm side (the red marker in the scene). The shoulder is assumed to be directly above this pivot.
Torque balance about the pivot at the moment of tipping:
\[Mg\,\frac{w}{2} = mg\,l\cos\varphi \quad\Longrightarrow\quad m_c = \frac{wM}{2\,l\cos\varphi}\]| Symbol | Meaning | Value in the simulator |
|---|---|---|
M |
Body mass | 129.3 kg |
w |
Width between the outer edges of the feet | 0.6 m |
l |
Arm length | 0.35 m |
φ |
Arm angle above horizontal | slider, 0–80° |
m |
Mass of the held object | slider, 0–250 kg |
h_c |
Height of the body’s center of mass | 0.55 m |
| shoulder height | Height of the shoulder pivot | 0.62 m |
If m < m_c the body stays upright; if m > m_c gravity torque from the hand wins and he tips outward.
The tilt angle α (positive = outward) follows
\[I\,\ddot\alpha = \tau_g(\alpha) + \tau_{\text{sole}}(\alpha) - c\,\dot\alpha\]with
\[\tau_g(\alpha) = g\Big[M\big(-\tfrac{w}{2}\cos\alpha + h_c\sin\alpha\big) + m\big(d\cos\alpha + h_h\sin\alpha\big)\Big]\]where d = l cos φ is the horizontal reach of the hand, h_h = 0.62 + l sin φ is the hand height, and I is the moment of inertia about the pivot (body treated with an approximate radius of gyration, hand as a point mass).
k_out = 1.15·M·g·h_c, vanishing at α_s = 0.3 rad, i.e. when the foot lifts), and a stiff spring acts on the inward side (k_in = 30·M·g·h_c) to represent the other foot on the ground.c = 30.The whole app is a single HTML file: Doraemon Tipping Simulator (Ottotto).html.
To work offline, download three.min.js (r128) and change the <script src=...> tag to point to the local copy.
All model parameters are constants at the top of the <script> block:
const g=9.8, M=129.3, w=0.6, l=0.35, hc=0.55, sy=0.62;
const kout=1.15*M*g*hc, kin=30*M*g*hc, as=0.3;
Changing M, w, l or hc changes the tipping threshold. The slider ranges are set in the <input type="range"> elements.
prefers-color-schemeChoose a license for your code (for example MIT) and add it here.